昨天完成了 LINE Developers 與 Gemini API Key 的申請後,今天開始正式撰寫 SubWise 的第一支 Python 程式。
今天的目標很簡單:建立一個可以正常運行的 Flask 後端,方便之後串接 LINE Webhook、Gemini AI 與 Google Sheets 。
SubWise 未來的資料流程會是:
Flask 可以視為整個系統的「中控站」。當使用者在 LINE 傳送文字、照片或查詢指令時,所有請求都會先送到 Flask,再由 Flask 決定要交給 Gemini 分析,還是寫入 Google Sheets。今天的目標,就是先讓這個「中控站」成功運作。
首先建立專案專屬的虛擬環境:
python -m venv venv
接著啟動虛擬環境(Windows PowerShell):
.\venv\Scripts\Activate.ps1
成功後,Terminal 前面就會多出 (venv),代表目前安裝的套件都只會存在這個專案,不會影響其他 Python 專案。
今天只需要安裝兩個套件:
pip install flask python-dotenv
其中:
.env 中的 API Key最後再利用:
python -m pip freeze > requirements.txt
產生 requirements.txt,方便之後部署到 Render。
今天也建立了 .env:
LINE_CHANNEL_ACCESS_TOKEN=xxxxxxxx
GEMINI_API_KEY=xxxxxxxx
之後所有敏感資訊都放在 .env,而不是直接寫進程式碼。另外也建立了 .gitignore:
venv/
.env
pycache/
*.pyc
避免 API Key 被誤傳到 GitHub。
今天完成的 Flask 程式非常簡單:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def home():
return jsonify({
"status": "success",
"message": "SubWise Backend is running!"
})
if __name__ == "__main__":
app.run(debug=True)
雖然只有短短十幾行,但它已經是一個真正的 Web API。
今天最大的收穫,是開始理解 Flask 的運作流程。當瀏覽器輸入 http://127.0.0.1:5000,整個流程其實是:
瀏覽器
│
▼
http://127.0.0.1:5000
│
▼
Flask (app.py) → home() → jsonify()
│
▼
JSON 回傳
未來串接 LINE Bot 時,也只是把「瀏覽器」換成「LINE Platform」而已。
1. 新開的 Terminal 找不到 pip
執行 pip freeze 時出現 pip : 無法辨識 'pip'。後來才發現,原來每次開新的 Terminal,都需要重新啟動虛擬環境,重新執行 .\venv\Scripts\Activate.ps1 後就恢復正常。
2. 開錯網址
第一次測試時,打開的是專案資料夾而不是 Flask Server,畫面只顯示 venv 與 app.py。後來確認網址應該是 http://127.0.0.1:5000,終於成功看到 API 回傳結果。
今天順利把 Flask 後端建置完成,也理解了「接收請求 → 執行程式 → 回傳結果」的運作邏輯!
明天 Day 03,我將把這個本機專案部署到 Render,讓 SubWise 從只能在自己電腦上執行,變成任何人都能透過網址存取的線上服務,也為後續串接 LINE Webhook 做好準備。我們明天見!